package com.hedl.classroom.feignclient.impl;

import com.hedl.classroom.feignclient.MediaServiceClient;
import com.hedl.classroom.model.dto.UploadFileResultDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author Big Watermelon
 * @description
 * @date 2023/11/29/17:15
 * 无法同时满足降级和熔断，后续更改吧
 * 修改成了使用openfeign结合sentinel使用，目前可以正常使用，使用之前必须先启动sentinel
 */
@Slf4j
@Component
public class MediaServiceClientFallbackFactory implements FallbackFactory<MediaServiceClient> {

    //拿到了熔断的异常信息cause;修改成了使用openfeign结合sentinel使用，目前可以正常使用
    @Override
    public MediaServiceClient create(Throwable cause) {
        return new MediaServiceClient() {
            //发生熔断上传服务调用此方法执行降级逻辑
            @Override
            public String upload(MultipartFile filedata, String folder, String objectName) {
                log.debug("远程调用上传文件的接口发生熔断：{}",cause.toString(),cause);
                return null;
            }
        };
    }
}
